package com.baseLearn.learn.designPatterns.Template;

/**
 * 优点:
 * 提高代码复用性
 * 将相同部分的代码放在抽象的父类中，而将不同的代码放入不同的子类中
 * 实现了反向控制
 * 通过一个父类调用其子类的操作，通过对子类的具体实现扩展不同的行为，实现了反向控制 & 符合“开闭原则”
 */

/**
 * 模版方法和策略模式的对比
 * 模版方法：控制算法内部,继承
 * 策略模式：不同算法的管理,组合
 */


public class MainTest {
    /**
     * 冲泡咖啡：
     * 先烧热水
     * 把热水倒入杯子
     * 放入咖啡粉
     * <p>
     * 冲泡茶：
     * 先烧热水
     * 把热水倒入杯子
     * 放入茶叶
     *
     * @param args
     */
    public static void main(String[] args) {
        new CoffeBeverage().makeBeverage();
        new TeaBeverage().makeBeverage();
    }
}
